package com.xbongbong.paas.script.pojo.dto;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.List;

/**
 * @author zcp
 * @version v1.0
 * @since v1.0
 */
@Setter
@Getter
@ToString
public class InitCustomerStatementDTO implements Serializable {
    private static final long serialVersionUID = -5550269296781452122L;
    /**
     * 脚本执行校验码
     */
    @NotBlank(message = "校验码不能为空")
    private String xbbCode;

    /**
     * 1 代表前置执行脚本时的初始化，直接插入数据，【必须传timestamp】限制查询的结束时间
     * 2 代表增量处理，只处理增量部分的数据。【必须传timestamp】，且与1对应（与1传的timestamp值必须一致）。限制查询的开始时间，且不能限制del条件（把del的状态变更也要处理到statement表），需与statement表数据匹配是插入还是更新（只更改关联名称、del状态）
     * 非1、2则代表修复对账记录，【必须传corpidList】按公司处理，不限制del（可能单据删了但对账记录未删，所以要处理）、不限制时间，且要排重（对已存在的记录更新）
     */
    private Integer initFlag;

    /**
     * 是否处理es：1处理，默认处理；0不处理
     * 初始化时可以只插入数据库，然后用接口同步es数据即可，增量更新可以同步把es更新
     */
    private Integer dealWithEs;

    /**
     * 时间标识，主要资金3期上线时前置和后置执行需要用到
     */
    private Long timestamp;

    /**
     * 公司id列表（不填则对所有公司生效，只有资金3期上线时可以不传该参数，如果后续要修复数据，则必传）
     */
    private List<String> corpidList;

    /**
     * 公司id（修复数据时，则必传）
     */
    private String paramCorpid;

    /**
     * 客户id数组 -- 主要是给客户修复数据时可能用到，当传该参数时，corpidList只能传1个公司，且确保客户id集合都是该公司的客户，不然脚本执行无效（查不出数据）
     * 非必传（但是尽量还是传要修复的客户id，不传的话会刷整个公司客户所有的回款单、应收款对账记录）
     */
    private List<Long> customerIdList;
}
